/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package OpticaDAOS;

import Herramientas.PasarelaDatos;
import Herramientas.ResultSets;
import OpticaDTOS.PacientesDTO;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * @author Alan Gonzalez
 */
public class PacientesDAO {

    private PasarelaDatos db;
    private ResultSets res;

    public PacientesDAO() {
        db = new PasarelaDatos();
        res = new ResultSets();
    }

    /**
     *
     * SELECCIONAR TODOS LOS PACIENTES QUE SE TIENEN REGISTRADOS
     *
     * @return
     */
    public Vector seleccionarTodos() {
        Vector todos = new Vector();
        db.openDatabase();
        ResultSet rst = null;
        String query = "select * from clientes where estado > 0";
        rst = db.executeQuery(query);
        try {
            while (rst.next()) {
                PacientesDTO paciente = new PacientesDTO();
                paciente = res.pacientesDTO(rst);
                todos.add(paciente);
            }
        } catch (SQLException ex) {
            Logger.getLogger(PacientesDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        db.closeDatabase();
        return todos;
    }

    /**
     * ALAN GONZALEZ METODO PARA FILTRAR POR NOMBRE
     *
     * @param nombre
     * @param apMat
     * @param apPat
     * @return
     */
    public Vector seleccionarPorNombre(String nombre, String apMat, String apPat) {
        Vector v = new Vector();
        
        if(nombre.length()>0 && apMat.length() > 0 && apPat.length()>0){
        db.openDatabase();
        ResultSet rst = null;
        String query = 
        "select * from clientes where nombre='" + nombre + "'" 
        + "and ap_materno='" + apMat + "'" + "and ap_paterno='" + apPat + "'";
        query += " and estado > 0";
        
        rst = db.executeQuery(query);
        try {
            while (rst.next()) {
                PacientesDTO paciente = new PacientesDTO();
                paciente = res.pacientesDTO(rst);
                v.add(paciente);
            }
        } catch (SQLException ex) {
            Logger.getLogger(PacientesDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        db.closeDatabase();
        }
        else if(nombre.length() == 0  || nombre == null && apMat.length() == 0  || apMat == null &&  apPat.length() == 0  || apPat == null  ){
           v = this.seleccionarTodos();
        }
        return v;
    }

    /**
     * ALAN GONZALEZ - NUEVO REGISTRO
     * @param p 
     */
    public void nuevo(PacientesDTO p){
        db.openDatabase();
        String query = new String();
        query += " INSERT INTO clientes SET";
        query += " id = 0";
        query += " , nombre = '" + p.getNombres() + "'";
        query += " , ap_paterno = '" + p.getAp_pat() + "'";
        query += " , ap_materno = '" + p.getAp_mat() + "'";
        query += " , edad =" + p.getEdad();
        query += " , telefono = " + p.getTelefono();
        query += " , direccion = '" + p.getDireccion() + "'";
        query += " , email = '" + p.getEmail() + "'";
        query += " , estado = 1";
        db.execute(query);
        db.closeDatabase();
    }
    
    /**
     * ALAN GONZALEZ - BORRADO LOGICO DEL REGISTRO
     * @param idReg 
     */
    public void borradoLogico(int idReg){
        db.openDatabase();
        String query = "update clientes set estado = 0 where id="+idReg;
        db.execute(query);
        db.closeDatabase();
    }
}
